1. Field of the Invention
The present invention relates to an apparatus and method for modifying frames in hardware to implement storage device virtualization.
2. Background of the Invention
Storage virtualization is the treating of storage as a single logical entity without regard to the hierarchy or type of physical media that may be involved in the defining of the logical entity. That is, a single logical storage entity may be comprised of a plurality of physical storage devices but to all applications, the plurality of physical storage devices still appear to be a single large storage device. Storage virtualization enables the applications to be written to a single programming interface rather than to the details of the various disk, tape and optical devices that are used to store data.
FIG. 1 illustrates an exemplary prior art mechanism for storing and reading data from a storage device that is the subject of virtualization. As shown in FIG. 1, the system comprises a host device 110, a virtual device 120, a virtual host 130, and a physical storage device 140. With the storage and reading of data from the physical storage device, three phases are performed: the command phase, status phase, and data in/out phase. The command phase involves the passing of command frames to the storage device 140 commanding the storage device 140 to prepare for the storage or reading of data. The status phase involves sending and receiving status frames to and from the storage device 140 to verify that the storage device is reading for storage or reading of data. The data in/out phase involves the actual transfer of data between the storage device 140 and the host device 110.
As shown in FIG. 1, the command, status and actual data frames all experience similar paths. That is, command and data in frames are sent from the host device 110 to the physical storage device 140 via the virtual device 120 and the virtual host 130. At the virtual device 120, the frames are stored and then forwarded to the virtual host device 130. At the virtual host 130, the frames are again stored before being forwarded to the storage device 140 (see steps 1–3).
This same store and forward approach is taken on status and data out frames on the return path. Status and data out frames from the storage device 140 are sent to the host device 110 via the virtual host 130 and the virtual device 120 (see steps 4–6). Depending upon the type of frame, different operations occur as the frames are sent via virtual device 120 and virtual host 130.
The virtual device 120 communicates to the host device 110 in its chosen protocol. Similarly, the virtual host 130 communicates to the storage device in its chosen protocol. The virtual device 120 and virtual host 130 perform the necessary mappings and protocol conversions to map a virtual or logical storage entity to physical device 140.
For example, the host device's commands could be a disk protocol, while the storage device's command 140 are a tape protocol. Also, the host device could be accessing one logical disk while the physical storage devices are a tape pool. The host device 110 sends a command frame to the virtual device 120. Virtual device 120 translates host's command protocol into a proprietary protocol known by the virtual device 120 and the virtual host 130. The proprietary command is sent to the virtual host 130. Virtual host 130 receives the proprietary command and translates it into the storage's command protocol.
When the data is transferred from the host device 110 to storage device 140, or vice versa, the data is stored and forwarded at both virtual device 120 and virtual host 130. When the storage device 140 responds with status, virtual host 130 translates the status into a proprietary protocol before sending it to virtual device 120. Virtual device 120 translates the proprietary protocol into host device's protocol before sending it to host device 110.
During this whole sequence, host device 110 may store data to logical storage device entity “F:” but “F:” may be comprised of a plurality of actual physical storage devices of which storage device 140 may be one. The virtual device 120 maps the logical storage device entity “F:” to a plurality of storage devices handled by the virtual host 130 and forwards the data frame to the virtual host 130. The virtual host 130 maps the logical storage device entity “F:” to storage device 140.
Thus, with the known system described above, each store and forward adds delay or latency between the physical host device 110 and the physical storage device 140. This latency slows down the performance of the system by delaying the data, commands, and status frames sent to and from the storage device 140. Each delay forces the host device 110 to wait for its response from the storage device 140. Since no data is sent to the storage device 140 while the host device 110 waits for a response, the wait time is equated to wasted bandwidth and poor performance.
Therefore, it would be desirable to have an apparatus and method for performing storage virtualization in which delay and latency is reduced. Moreover, it would be desirable to have an apparatus and method in which the store and forward operations of the known system are minimized in order to reduce this delay and latency.